date-util.js ➔ ... ➔ ???   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
nc 1
dl 0
loc 1
ccs 1
cts 1
cp 1
crap 1
rs 10
nop 1
1
/**
2
 * Date Util functions
3
 *
4
 * @since 1.0.0
5
 */
6
7 5
const moment = require('moment');
8
9
/**
10
 * Format all dates in the received model
11
 * @param {Array|Date|Object} model
12
 * @param {string} [formatString]
13
 * @returns {*}
14
 */
15 5
exports.formatDates = (model, formatString, utcOffset) => {
16 275
  if (model instanceof Array) {
17 64
    return model.map(item => exports.formatDates(item, formatString, utcOffset));
18 244
  } else if (model instanceof Date || model instanceof moment) {
19 67
    return exports.formatDate(model, formatString, utcOffset);
20 177
  } else if (model instanceof Object) {
21 33
    const result = {};
22 193
    Object.keys(model).forEach((key) => { result[key] = exports.formatDates(model[key], formatString, utcOffset); });
23 33
    return result;
24
  }
25 144
  return model;
26
};
27
28
/**
29
 * Localize date
30
 * @param {Date} date
31
 * @param {number} [utcOffset]
32
 * @returns {moment}
33
 */
34 67
exports.toLocalDate = (date, utcOffset) => moment(date).utcOffset(typeof utcOffset === 'undefined' ? 9 : utcOffset);
35
36
/**
37
 * Format date to string
38
 * @param {Date} date
39
 * @param {string} [formatString]
40
 * @param {number} [utcOffset]
41
 * @returns {string}
42
 */
43
exports.formatDate = (date, formatString, utcOffset) => exports.toLocalDate(date, utcOffset).format(formatString);
44